package firstweekwork;

import org.omg.CORBA.INTERNAL;

public class Exercise_1 {
    public static void main(String[] args) {
        byteToOthers();     //华
        shortToOthers();    //华
        intToOthers();      //郎
        floatToOthers();    //贺
        doubleToOthers();   //齐
        charToOthers();     //贺
        longToOthers();     //郎
    }
    // byte的合法转换
    public static  void  byteToOthers (){
        byte a=-127;
        /**
         * 下面的强制类型转换实际上除了byte->char都是多余的，byte
         */
        short a_short=(short)a;
        int a_int=(int)a;
        long a_long=(long)a;
        float a_float=(float)a;
        double a_double=(double)a;
        char a_char=(char)a;

        System.out.print("byte可以合法转换为short:");
        if(a==a_short){
            System.out.println("是");
        }
        else{
            System.out.println("否");
        }
        System.out.print("byte可以合法转换为int:");
        if(a==a_int){
            System.out.println("是");
        }
        else{
            System.out.println("否");
        }
        System.out.print("byte可以合法转换为long:");
        if(a==a_long){
            System.out.println("是");
        }
        else{
            System.out.println("否");
        }

        System.out.print("byte可以合法转换为float:");
        if(a==a_float){
            System.out.println("是");
        }
        else{
            System.out.println("否");
        }
        System.out.print("byte可以合法转换为double:");
        if(a==a_double){
            System.out.println("是");
        }
        else{
            System.out.println("否");
        }

        System.out.print("byte可以合法转换为char:");
        if(a==a_char){
            System.out.println("是");
        }
        else{
            System.out.println("否    byte:(-128~127) char:(0-65535)");
        }

    }
    //short的合法转换
    public static void shortToOthers(){
        short a=-32768;
        /**
         * 下面的强制类型转换实际上除了byte->char都是多余的，byte
         */
        byte a_byte=(byte)a;
        int a_int=(int)a;
        long a_long=(long)a;
        float a_float=(float)a;
        double a_double=(double)a;
        char a_char=(char)a;

        System.out.print("short可以合法转换为byte:");
        if(a==a_byte){
            System.out.println("是");
        }
        else{
            System.out.println("否   byte:(-128~127) short:(-32768-32767)");
        }
        System.out.print("short可以合法转换为int:");
        if(a==a_int){
            System.out.println("是");
        }
        else{
            System.out.println("否");
        }
        System.out.print("short可以合法转换为long:");
        if(a==a_long){
            System.out.println("是");
        }
        else{
            System.out.println("否");
        }

        System.out.print("short可以合法转换为float:");
        if(a==a_float){
            System.out.println("是");
        }
        else{
            System.out.println("否");
        }
        System.out.print("short可以合法转换为double:");
        if(a==a_double){
            System.out.println("是");
        }
        else{
            System.out.println("否");
        }

        System.out.print("short可以合法转换为char:");
        if(a==a_char){
            System.out.println("是");
        }
        else{
            System.out.println("否   short:(-32768~32767) char:(0-65535)");

        }

    }
    //int的合法转换
    public static void intToOthers(){
        int a= 2001425631;
        byte a_byte=(byte)a;
        short a_short=(short)a;
        long a_long=a;
        float a_float=(float)a;
        double a_double=a;
        char a_char=(char)a;
        System.out.print("int可否合法转换为byte:");
        if(a==a_byte){
            System.out.println("是");
        }
        else{
            System.out.println("否");
        }
        System.out.print("int可否合法转换为long:");
        if(a==a_long){
            System.out.println("是");
        }
        else{
            System.out.println("否");
        }
        System.out.print("int可否合法转换为short:");
        if(a==a_short){
            System.out.println("是");
        }
        else{
            System.out.println("否");
        }

        System.out.print("int可否合法转换为float:");
        if(a==a_float){
            System.out.println("是");
        }
        else{
            System.out.println("否");
        }
        System.out.print("int可否合法转换为double:");
        if(a==a_double){
            System.out.println("是");
        }
        else{
            System.out.println("否");
        }

        System.out.print("int可否合法转换为char:");
        if(a==a_char){
            System.out.println("是");
        }
        else{
            System.out.println("否");

        }
        System.out.println("int的大小为："+ Integer.SIZE+"bit，即"+Integer.BYTES+"byte。");
        System.out.println("int的取值范围为："+Integer.MAX_VALUE+"~"+Integer.MIN_VALUE);
    }
    // long的合法转换
    public static void longToOthers(){
        long a= 4444399035084526943L;
        byte a_byte=(byte)a;
        short a_short=(short)a;
        int a_int=(int)a;
        float a_float=(float)a;
        double a_double=(double)a;
        char a_char=(char)a;
        System.out.print("long可否合法转换为byte:");
        if(a==a_byte){
            System.out.println("是");
        }
        else{
            System.out.println("否");
        }
        System.out.print("long可否合法转换为int:");
        if(a==a_int){
            System.out.println("是");
        }
        else{
            System.out.println("否");
        }
        System.out.print("long可否合法转换为short:");
        if(a==a_short){
            System.out.println("是");
        }
        else{
            System.out.println("否");
        }

        System.out.print("long可否合法转换为float:");
        if(a==a_float){
            System.out.println("是");
        }
        else{
            System.out.println("否");
        }
        System.out.print("long可否合法转换为double:");
        if(a==a_double){
            System.out.println("是");
        }
        else{
            System.out.println("否");
        }

        System.out.print("long可否合法转换为char:");
        if(a==a_char){
            System.out.println("是");
        }
        else{
            System.out.println("否");

        }
        System.out.println("long的大小为："+Long.SIZE+"bit，即"+Long.BYTES+"byte。");
        System.out.println("long的取值范围为："+Long.MAX_VALUE+"~"+Long.MIN_VALUE);
    }
    //  char的合法转换
    public static  void charToOthers (){
        char a = 2;
        long b = a;
        int c = a;
        byte d = (byte) a;
        short e = (byte)a;
        float f = a;
        double g = a ;

        if(a==b){
            System.out.println("char可以合法转换为long");
        }
        else{
            System.out.println("char不可以合法转换为long");
        }
        if(a==c){
            System.out.println("char可以合法转换为int");
        }
        else{
            System.out.println("char不可以合法转换为int");
        }
        if(a==d){
            System.out.println("char可以合法转换为byte");
        }
        else{
            System.out.println("char不可以合法转换为byte");
        }
        if(a==e){
            System.out.println("char可以合法转换为short");
        }
        else{
            System.out.println("char不可以合法转换为short");
        }
        if(a==f){
            System.out.println("char可以合法转换为float");
        }
        else{
            System.out.println("char不可以合法转换为float");
        }
        if(a==g){
            System.out.println("char可以合法转换为double");
        }
        else{
            System.out.println("char不可以合法转换为double");
        }
    }
    // float的合法转换
    public static void floatToOthers(){
        float a = (float) 1.02222222;
        double b = a;
        char c = (char) a;
        int d = (int) a;
        byte g = (byte)a;
        short f  = (short) a;
        long k = (long) a;

        if(a==b){
            System.out.println("float可以合法转换为double");
        }
        else{
            System.out.println("float不可以合法转换为double");
        }
        if(a==c){
            System.out.println("float可以合法转换为char");
        }
        else{
            System.out.println("float不可以合法转换为char");
        }
        if(a==d){
            System.out.println("float可以合法转换为int");
        }
        else{
            System.out.println("float不可以合法转换为int");
        }
        if(a==g){
            System.out.println("float可以合法转换为byte");
        }
        else{
            System.out.println("float不可以合法转换为byte");
        }
        if(a==f){
            System.out.println("float可以合法转换为short");
        }
        else{
            System.out.println("float不可以合法转换为short");
        }
        if(a==k){
            System.out.println("float可以合法转换为long");
        }
        else{
            System.out.println("float不可以合法转换为long");
        }
    }
    // double的合法转换
    public static void doubleToOthers(){
        double a= 2001425631.00000001;
        byte a_byte=(byte)a;
        short a_short=(short)a;
        int a_int=(int)a;
        long a_long=(long)a;
        float a_float=(float)a;
        char a_char=(char)a;
        System.out.print("double可否合法转换为byte:");
        if(a==a_byte){
            System.out.println("是");
        }
        else{
            System.out.println("否");
        }
        System.out.print("double可否合法转换为long:");
        if(a==a_long){
            System.out.println("是");
        }
        else{
            System.out.println("否");
        }
        System.out.print("double可否合法转换为short:");
        if(a==a_short){
            System.out.println("是");
        }
        else{
            System.out.println("否");
        }

        System.out.print("double可否合法转换为float:");
        if(a==a_float){
            System.out.println("是");
        }
        else{
            System.out.println("否");
        }
        System.out.print("double可否合法转换为int:");
        if(a==a_int){
            System.out.println("是");
        }
        else{
            System.out.println("否");
        }

        System.out.print("double可否合法转换为char:");
        if(a==a_char){
            System.out.println("是");
        }
        else{
            System.out.println("否");

        }
        System.out.println("double的大小为："+ Double.SIZE+"bit，即"+Double.BYTES+"byte。");
        System.out.println("double的取值范围为："+Double.MAX_VALUE+"~"+Double.MIN_VALUE);
    }
}